﻿/*
 *作者：段凯强，章秀，左鹏飞
 *功能：用来解决一些辅助功能，如过滤字符串等等
 *日期：2011-08
 */
//过滤微博信息中的可能无法正常显示的字符:要进行过滤的字符串
function hWeiboContentFilter(str){
	var _str=str;
	_str.replace("&","&amp;");//这个必须先替换
	_str.replace(/[\n\s\t]/,"&nbsp;");
	_str.replace("<","&lt;");
	_str.replace(">","&gt;");
	_str.replace("\"","&quot;");
	_str.replace("\'","&acute;");
	return _str;
}
//验证码算法：经纬度、航程站点次序
function hIdentifyingCode(lat,lng,station){
	var l1=Math.round(lat*1000000+lng*1000000)<<2;
	var l2=Math.round((lng*1000000-lat*1000000)*100000)>>3;
	return l1+l2+station;
}
//根据验证码得到航程站点次序：经纬度，验证码
function hRouteStation(lat,lng,c){
	var l1=Math.round(lat*1000000+lng*1000000)<<2;
	var l2=Math.round((lng*1000000-lat*1000000)*100000)>>3;
	return c-l1-l2;
}
//过滤微博数据
function hWeiboFilter(weibos){
	var r=new Array();
	for(var w in weibos){
		if(weibos[w].from!="WebQQ开放平台"){
			continue;
		}
		if(weibos[w].geo==null){
			continue;
		}
		if(weibos[w].type!=1&&weibos[w].type!=2){
			continue;
		}
		//TODO可能还需要其他的验证方法，比如结合验证码，需要更好的验证码算法
		r.push(weibos[w]);
	}
	return r;
}
//解析微博数据
function hAnalyzeWeibo(weibo){
	var res=weibo.split("\t",4);
	res[0]=exchangeMoodStr(false,res[0]);
	res[2]=res[2].substring(1,res[2].length);
	res[3]=res[3].substring(1,res[3].length-1);
	var t=res[3].split(".",3);
	res[3]=t[0];
	res[4]=t[1];
	res[5]=t[2];
	return res;
}
//返回字符串形式的时间
function hParseTime(_timestamp){
	var _time=new Date();
	_time.setTime(_timestamp*1000);
	var year=_time.getFullYear();
	var month=((_time.getMonth()+1)<10?("0"+(_time.getMonth()+1)):(_time.getMonth()+1));
	var day=(_time.getDate()<10?("0"+_time.getDate()):_time.getDate());
	var hour=(_time.getHours()<10?("0"+_time.getHours()):_time.getHours());
	var minute=(_time.getMinutes()<10?("0"+_time.getMinutes()):_time.getMinutes());
	return year+"/"+month+"/"+day+" "+hour+":"+minute;
}
//获取航程设置微博的数组
function hGetRouteWeibo(_weibos){
	var res=new Array();
	var sNum=0;
	var flag=false;
	for(var i in _weibos){
		if(_weibos[i].type!=1){
			continue;
		}
		var t=hAnalyzeWeibo(_weibos[i].origtext);
		var lat=t[4]/1000000;
		var lng=t[5]/1000000;
		if(hRouteStation(lat,lng,t[3])==0){
			continue;
		}
		if(sNum==0||sNum==(hRouteStation(lat,lng,t[3])+1)){
			sNum=hRouteStation(lat,lng,t[3]);
			var temp=new Array();
			temp[0]=_weibos[i];
			temp[1]=i;
			res.push(temp);
			if(sNum==1){
				flag=true;
				break;
			}
			continue;
		}
	}
	if(flag){
		return res;
	}
	return new Array();
}
//根据微博的分布获取地图的中心和级别
function hGetZoomlevelCenter(width, height,latLng){
	var m = [100,200,200,500,1000,2000,5000,10000,20000,50000,100000,200000,200000,500000];
	var px = [110,110,55,70,70,70,85,85,85,110,110,110,55,70];
	var containerWidth = new Array();
	var containerHeight = new Array();
	for(var i = 0; i < 14; i++){
		containerWidth[i] = width*m[i]/px[i];
		containerHeight[i] = height*m[i]/px[i];
	}
	/*求最大最小经纬度*/
	var minLat=latLng[0].getLat(),
		minLng=latLng[0].getLng(),
		maxLat=latLng[0].getLat(),
		maxLng=latLng[0].getLng();
	for(var i=1; latLng!=null&&i<latLng.length; i++){
		minLat = minLat <= latLng[i].getLat() ? minLat : latLng[i].getLat();
		minLng = minLng <= latLng[i].getLng() ? minLng : latLng[i].getLng();
		maxLat = maxLat >= latLng[i].getLat() ? maxLat : latLng[i].getLat();
		maxLng = maxLng >= latLng[i].getLng() ? maxLng : latLng[i].getLng();
	}
	var center = new soso.maps.LatLng(((minLat+maxLat)/2).toFixed(6),((minLng+maxLng)/2).toFixed(6));
	//求长宽距离
    var latLength = map.getDistance(new soso.maps.LatLng(minLat,minLng),new soso.maps.LatLng(maxLat,minLng));
    var lngLength = map.getDistance(new soso.maps.LatLng(maxLat,minLng),new soso.maps.LatLng(maxLat,maxLng));
    var q = 0, p = 0;
	for(;lngLength > containerWidth[p]; p++) ;
	for(;latLength > containerHeight[q]; q++) ;
	var zoomlevel = p >= q ? (17-p) : (17-q);
	//结果
	var res = new Array();
	res[0] = zoomlevel;
	res[1] = center;
	return res;
}
